public class ClientClass {
    public static void main(String[] args) {
        Factory factory = new Factory();

        // 创建单个水果
        Fruit apple = factory.CreateFruit("A");
        apple.eat();

        // 创建组合礼盒
        FruitBox giftBox = (FruitBox) factory.CreateFruit("G");
        giftBox.add(factory.CreateFruit("A"));
        giftBox.add(factory.CreateFruit("B"));

        // 添加子礼盒
        FruitBox subBox = (FruitBox) factory.CreateFruit("G");
        subBox.add(factory.CreateFruit("A"));
        subBox.add(factory.CreateFruit("A"));
        giftBox.add(subBox);

        // 统一操作
        giftBox.eat();
        /* 输出：
           打开礼盒
           吃苹果
           吃香蕉
           打开礼盒
           吃苹果
           吃苹果
           礼盒已空

           礼盒已空
        */
    }
}